The Walk-Man Robot Software Architecture
نویسندگان
چکیده
ion layer The Ethercat-Master exposes the robot sensors and actuators in a YARP network by remotizing the robot with a set of YARP communication channels (this is achieved in YARP using special objects called network wrappers). An additional set of libraries, named WholeBodyInterface, hides YARP channels from control modules, and relieves the developers from the bureaucracy required to prepare and parse the messages to and from the robot. The composition of the YARP wrapper in the Ethercat-Master and the whole-body libraries realizes a two-tier Habstraction Layer (HAL) for the robot. This abstraction layer between the hardware driver and the control modules allowed us to easily switch between simulation and the real robot, since the Gazebo plug-ins for the Walk-Man robot implements exactly the same YARP classes and interfaces as the Master (see Figure 6). In the simulation case, the Gazebo Plugin substitutes the HAL standalone application and it is fully compatible with the same set of shared libraries. The two-tier abstraction layer implements a whole-body interface on top of the robot interface defined by YARP. The main difference between the two layers is that the latter separates joints in kinematic chains and implements interfaces for individual sensors; for practical reasons, the logical separation of the kinematic chains at this level is subject to fluctuations (for example, it affects how joint states are broadcast on the network). The whole-body interface groups all joints and associated sensors in a single kinematic chain. The advantage of this separation is that it exposes to the user the whole-body interface, which is stable because it is defined solely by the number of joints of the robot. As an extreme example, 15 days before the DRC, we had to intentionally break the functions responsible for moving the robot joints. To reduce resource usage (and reduce jitter due to CPU overload), we changed how joints are grouped and transmitted on the network; all the required changes affected the YARP abstraction layer and remain limited to the implementation of the whole-body interface. All the user code remained untouched. The simulation, the real robot, and all the control modules were updated in just 2 days. FigUre 7 | structure of the generic YarP Module, with inputs and outputs from/to the pilot and the ethercatMaster. 6 Ferrati et al. The Walk-Man Robot Software Architecture Frontiers in Robotics and AI | www.frontiersin.org May 2016 | Volume 3 | Article 25 As suggested by Johnson et al. (2015), we fully understand (and wish) that in a long-term project APIs must not be modified, especially few days before the demo. However, we are convinced that, in a research environment APIs may need to be changed in critical moments, and the proposed approach is a way to mitigate the effect of such changes. Finally, an advantage of this two-layer architecture is that it separates control modules from the middleware. This will allow to change the communication layer (i.e., the middleware) without affecting the control code. 2.4. generic control Module Template A control module software can be summarized as a sense-computemove loop, where sense receives all the inputs from the robot, the inputs are used by compute in order to implement the control law of the module. Finally, move sends to the robot the newly computed desired position of the joints. In reality, developers usually spend a part of development effort into initialization code: i.e., reading control parameters, starting the communication facilities, reading a description of the robot kinematics, and so on. We provided explicit support for this implementation pattern in the Generic YARP Module (GYM). The GYM has been designed as a C++ abstract class that provides a common and standard way to execute these initialization steps, along with a sense and move default implementation that provide boilerplate code required to initialize the YARP remotization interfaces. The source code of GYM can be found here: https://github.com/robotology-playground/GYM GYM functions handle all the required YARP communication between a module, the Master, and the PilotInterface, effectively hiding YARP communication mechanisms and classes. GYM was iteratively improved driven by the effort to remove duplicated code across modules and based on the team feedback (10 developers) which helped revising the specifications and debugging. Our experience showed that the adoption of GYM reduced duplicated code significantly. In addition GYM provides another separation between the code and the middleware. In fact, a Generic ROS Module is currently in development and complies with the GYM API, so that any module using GYM could also be used in the ROS system. GYM is organized in two threads: a watchdog running at 1 Hz and a main control loop running in a range of frequencies between 100 and 500 Hz (Figure 7). Developers can write their own code inside the control loop function run(), they also have access to a set of helper function providing a standard kinematic description of the robot based on the robot URDF. The watchdog thread is not customizable and listens for standard commands from the pilot, through one of the standard communication interfaces (switch interface) described in the next section. The GYM C++ class that needs to be inherited by the user has the following signature: class generic_thread
منابع مشابه
Corrigendum: The Walk-Man Robot Software Architecture
Alberto Cardellino, Alessio Rocchi, Enrico Migo Hoffman, Corrado Pavan and Dimitrios Kanoulas were not included as authors in the published article. Here is the updated Author contributions: MF, LM, AS, AR, EMH, AC, DK, CP, and LN worked on the design of the global architecture and on the network. LM, MF, AR, EMH, AC, and NT designed and developed GYM and the HAL. AS and CP developed the operat...
متن کاملFlexible Foot/Ankle Based on PKM with Force/Torque Sensor for Humanoid Robot
This paper describes the development of a novel humanoid robot foot/ankle based on an orientation Parallel Kinematic Mechanism for intelligent and flexible control. With three identical Universal-Prismatic-Spherical prismatic-actuated limbs and a central Universal-Revolute passive limb, the PKM can perform three degrees of freedom rotation motions. In order to enable the humanoid robot safely t...
متن کاملOptimized Joint Trajectory Model with Customized Genetic Algorithm for Biped Robot Walk
Biped robot locomotion is one of the active research areas in robotics. In this area, real-time stable walking with proper speed is one of the main challenges that needs to be overcome. Central Pattern Generators (CPG) as one of the biological gait generation models, can produce complex nonlinear oscillation as a pattern for walking. In this paper, we propose a model for a biped robot joint tra...
متن کاملXIA-MAN: An Extensible, Integrative Architecture for Intelligent Humanoid Robotics
The XIA-MAN architecture for intelligent humanoid robot control is proposed, a novel design in which perception and action are achieved via a combination of GA-evolved neural-net modules with existing open-source software packages; and cognition is achieved via the OpenCog Prime framework. XML is used to communicate between components, enabling simple pluggability of additional or modified comp...
متن کاملThe Software Architecture for the Humanoid Robot COMAN
In this talk, the development of a novel software infrastructure for the humanoid robot COMAN will be presented. COMAN is a humanoid robot equipped with series elastic actuators, capable to perform complex tasks in a semi-autonomous and tele-operated way. To achieve this level of performance, the software that runs on COMAN has been designed in order to facilitate the developing cycle and to be...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Front. Robotics and AI
دوره 2016 شماره
صفحات -
تاریخ انتشار 2016